if(DEBUG&2048) printf("comparing %s(%ld) and %s(%ld)\n",vilist[i]->identifier,zl2l(vilist[i]->offset),vilist[b]->identifier,zl2l(vilist[b]->offset));
memcpy(tmp,used[i],bsize);
bvintersect(tmp,used[b],bsize);
if(!memcmp(tmp,empty,bsize)){
if(DEBUG&1024) printf("memory for %s(%ld) and %s(%ld) equal\n",vilist[i]->identifier,zl2l(vilist[i]->offset),vilist[b]->identifier,zl2l(vilist[b]->offset));
eqto[b]=i;
if(!zlleq(al[b],al[i])) al[i]=al[b];
if(!zlleq(sz[b],sz[i])) sz[i]=sz[b];
bvunite(used[i],used[b],bsize);
}
}
}
if(DEBUG&1024) printf("final recalculating\n");
max_offset=l2zl(0L);
for(i=0;i<vcount-rcount;i++){
if(!used[i]) continue;
free(used[i]);
if(DEBUG&2048) printf("adjusting offset for %s,%ld\n",vilist[i]->identifier,zl2l(vilist[i]->offset));